307f0bd627e969ef5c7ca34b0841fad23b3bf3d1,src/main/java/com/ociweb/pronghorn/iot/i2c/I2CJFFIStage.java,I2CJFFIStage,run,#,109

Before Change


        	    long waitTime = blockStartTime - hardware.currentTimeMillis();
        		if(waitTime>0){
        		   //do commands now while we wait for the next block. 
        		   processReleasedCommands(waitTime);
        		   waitTime = blockStartTime - hardware.currentTimeMillis();
        		   if (waitTime>0) {
        		       return; //Enough time has not elapsed to start next block on schedule

After Change


	        do {
			    long waitTime = blockStartTime - hardware.nanoTime();
	     		if(waitTime>0){
	     			if (null==rate || (waitTime > 2*rate.longValue())) {    				
	     				processReleasedCommands(waitTime);
	     				return; //Enough time has not elapsed to start next block on schedule
	     			} else {
	     				while (hardware.nanoTime()<blockStartTime){